package tips.p_1000.p251_300;

/**
 * 给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
 *
 * 示例:
 * 输入: [0,1,0,3,12]
 * 输出: [1,3,12,0,0]
 *
 * 说明:
 * 必须在原数组上操作，不能拷贝额外的数组。
 * 尽量减少操作次数。
 * @author hc
 */
public class Demo283 {

    /**
     * O(n) O(1)
     */
    public void moveZeroes(int[] nums) {

        int k = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0){
                nums[k++] = nums[i];
            }
        }
        while (k < nums.length){
            nums[k++] = 0;
        }
    }

    public static void main(String[] args) {
        new Demo283().moveZeroes(new int[]{0,1,0,3,12});
    }
}
